package com.zjcloud.jwgl.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;

/**
 * 约束类型对象 sc_constraint_type
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public class ScConstraintType extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 约束类型ID */
    private Long id;

    /** 约束编码 */
    @Excel(name = "约束编码")
    private String constraintCode;

    /** 约束名称 */
    @Excel(name = "约束名称")
    private String constraintName;

    /** 约束描述 */
    @Excel(name = "约束描述")
    private String description;

    /** 约束类别(HARD硬约束 SOFT软约束) */
    @Excel(name = "约束类别", readConverterExp = "HARD=硬约束,SOFT=软约束")
    private String constraintCategory;

    /** 约束分组(TEACHER教师约束 CLASSROOM教室约束 COURSE课程约束 TIME时间约束 STUDENT学生约束 RESOURCE资源约束) */
    @Excel(name = "约束分组", readConverterExp = "TEACHER=教师约束,CLASSROOM=教室约束,COURSE=课程约束,TIME=时间约束,STUDENT=学生约束,RESOURCE=资源约束")
    private String constraintGroup;

    /** 优先级(1-10) */
    @Excel(name = "优先级")
    private Integer priority;

    /** 权重系数 */
    @Excel(name = "权重系数")
    private BigDecimal weight;

    /** 默认权重 */
    @Excel(name = "默认权重")
    private BigDecimal defaultWeight;

    /** 最小权重 */
    @Excel(name = "最小权重")
    private BigDecimal minWeight;

    /** 最大权重 */
    @Excel(name = "最大权重")
    private BigDecimal maxWeight;

    /** 是否可配置(1是 0否) */
    @Excel(name = "是否可配置", readConverterExp = "1=是,0=否")
    private String isConfigurable;

    /** 是否系统内置(1是 0否) */
    @Excel(name = "是否系统内置", readConverterExp = "1=是,0=否")
    private String isBuiltIn;

    /** 算法类型 */
    @Excel(name = "算法类型")
    private String algorithmType;

    /** 检查函数 */
    @Excel(name = "检查函数")
    private String checkFunction;

    /** 参数配置 */
    @Excel(name = "参数配置")
    private String parameterConfig;

    /** 适用学段 */
    @Excel(name = "适用学段")
    private String applicableStages;

    /** 适用场景 */
    @Excel(name = "适用场景")
    private String applicableScenarios;

    /** 冲突处理策略 */
    @Excel(name = "冲突处理策略")
    private String conflictStrategy;

    /** 违反惩罚分数 */
    @Excel(name = "违反惩罚分数")
    private Integer penaltyScore;

    /** 使用频率 */
    @Excel(name = "使用频率")
    private Integer usageCount;

    /** 成功率 */
    @Excel(name = "成功率")
    private BigDecimal successRate;

    /** 平均执行时间(毫秒) */
    @Excel(name = "平均执行时间")
    private Long avgExecutionTime;

    /** 排序 */
    @Excel(name = "排序")
    private Integer sortOrder;

    /** 状态(1启用 0禁用) */
    @Excel(name = "状态", readConverterExp = "1=启用,0=禁用")
    private String status;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setConstraintCode(String constraintCode) 
    {
        this.constraintCode = constraintCode;
    }

    public String getConstraintCode() 
    {
        return constraintCode;
    }
    public void setConstraintName(String constraintName) 
    {
        this.constraintName = constraintName;
    }

    public String getConstraintName() 
    {
        return constraintName;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setConstraintCategory(String constraintCategory) 
    {
        this.constraintCategory = constraintCategory;
    }

    public String getConstraintCategory() 
    {
        return constraintCategory;
    }
    public void setConstraintGroup(String constraintGroup) 
    {
        this.constraintGroup = constraintGroup;
    }

    public String getConstraintGroup() 
    {
        return constraintGroup;
    }
    public void setPriority(Integer priority) 
    {
        this.priority = priority;
    }

    public Integer getPriority() 
    {
        return priority;
    }
    public void setWeight(BigDecimal weight) 
    {
        this.weight = weight;
    }

    public BigDecimal getWeight() 
    {
        return weight;
    }
    public void setDefaultWeight(BigDecimal defaultWeight) 
    {
        this.defaultWeight = defaultWeight;
    }

    public BigDecimal getDefaultWeight() 
    {
        return defaultWeight;
    }
    public void setMinWeight(BigDecimal minWeight) 
    {
        this.minWeight = minWeight;
    }

    public BigDecimal getMinWeight() 
    {
        return minWeight;
    }
    public void setMaxWeight(BigDecimal maxWeight) 
    {
        this.maxWeight = maxWeight;
    }

    public BigDecimal getMaxWeight() 
    {
        return maxWeight;
    }
    public void setIsConfigurable(String isConfigurable) 
    {
        this.isConfigurable = isConfigurable;
    }

    public String getIsConfigurable() 
    {
        return isConfigurable;
    }
    public void setIsBuiltIn(String isBuiltIn) 
    {
        this.isBuiltIn = isBuiltIn;
    }

    public String getIsBuiltIn() 
    {
        return isBuiltIn;
    }
    public void setAlgorithmType(String algorithmType) 
    {
        this.algorithmType = algorithmType;
    }

    public String getAlgorithmType() 
    {
        return algorithmType;
    }
    public void setCheckFunction(String checkFunction) 
    {
        this.checkFunction = checkFunction;
    }

    public String getCheckFunction() 
    {
        return checkFunction;
    }
    public void setParameterConfig(String parameterConfig) 
    {
        this.parameterConfig = parameterConfig;
    }

    public String getParameterConfig() 
    {
        return parameterConfig;
    }
    public void setApplicableStages(String applicableStages) 
    {
        this.applicableStages = applicableStages;
    }

    public String getApplicableStages() 
    {
        return applicableStages;
    }
    public void setApplicableScenarios(String applicableScenarios) 
    {
        this.applicableScenarios = applicableScenarios;
    }

    public String getApplicableScenarios() 
    {
        return applicableScenarios;
    }
    public void setConflictStrategy(String conflictStrategy) 
    {
        this.conflictStrategy = conflictStrategy;
    }

    public String getConflictStrategy() 
    {
        return conflictStrategy;
    }
    public void setPenaltyScore(Integer penaltyScore) 
    {
        this.penaltyScore = penaltyScore;
    }

    public Integer getPenaltyScore() 
    {
        return penaltyScore;
    }
    public void setUsageCount(Integer usageCount) 
    {
        this.usageCount = usageCount;
    }

    public Integer getUsageCount() 
    {
        return usageCount;
    }
    public void setSuccessRate(BigDecimal successRate) 
    {
        this.successRate = successRate;
    }

    public BigDecimal getSuccessRate() 
    {
        return successRate;
    }
    public void setAvgExecutionTime(Long avgExecutionTime) 
    {
        this.avgExecutionTime = avgExecutionTime;
    }

    public Long getAvgExecutionTime() 
    {
        return avgExecutionTime;
    }
    public void setSortOrder(Integer sortOrder) 
    {
        this.sortOrder = sortOrder;
    }

    public Integer getSortOrder() 
    {
        return sortOrder;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("constraintCode", getConstraintCode())
            .append("constraintName", getConstraintName())
            .append("description", getDescription())
            .append("constraintCategory", getConstraintCategory())
            .append("constraintGroup", getConstraintGroup())
            .append("priority", getPriority())
            .append("weight", getWeight())
            .append("defaultWeight", getDefaultWeight())
            .append("minWeight", getMinWeight())
            .append("maxWeight", getMaxWeight())
            .append("isConfigurable", getIsConfigurable())
            .append("isBuiltIn", getIsBuiltIn())
            .append("algorithmType", getAlgorithmType())
            .append("checkFunction", getCheckFunction())
            .append("parameterConfig", getParameterConfig())
            .append("applicableStages", getApplicableStages())
            .append("applicableScenarios", getApplicableScenarios())
            .append("conflictStrategy", getConflictStrategy())
            .append("penaltyScore", getPenaltyScore())
            .append("usageCount", getUsageCount())
            .append("successRate", getSuccessRate())
            .append("avgExecutionTime", getAvgExecutionTime())
            .append("sortOrder", getSortOrder())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}